Source:SLASH'EM 0.0.7E7F2/attk.h
Below is the full text to attk.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/attk.h#line123]], for example. The latest source code for vanilla NetHack is at Source code. 1. /* attk.h */ 2. /* NetHack may be freely redistributed. See license for details. */ 3. /* Copyright 1988, M. Stephenson */ 4. 5. #ifndef ATTK_H 6. #define ATTK_H 7. 8. typedef struct Attk { 9. struct monst *amon; /* Attacking monster */ 10. struct obj *wobj; /* The wielded object, launcher, or wand */ 11. struct obj *tobj; /* The thrown, kicked, or zapped object */ 12. struct monst *dmon; /* Defending monster */ 13. xchar atype; /* The attack type (AT_ below) */ 14. xchar admg; /* The damage type (AD_ below) */ 15. xchar skill; /* Skill used (if any) */ 16. schar aalign; /* Attacking monster's alignment */ 17. schar dalign; /* Defending monster's alignment */ 18. xchar ax, ay; /* Location of attacker */ 19. schar dx, dy, dz; /* Direction of the attack */ 20. xchar tx, ty; /* Location of tobj */ 21. xchar range; /* How much further tobj can go */ 22. xchar dist; /* Distance from amon to dmon */ 23. long tglyph; /* Glyph to use for tobj */ 24. xchar tohit; /* Calculated to-hit value */ 25. xchar dieroll; /* The die roll used for the attack */ 26. xchar damage; /* Calculated amount of damage */ 27. Bitfield(ayou,1); /* You are the attacker */ 28. Bitfield(avis,1); /* Player can see amon */ 29. Bitfield(dyou,1); /* You are the defender */ 30. Bitfield(dvis,1); /* Player can see dmon */ 31. Bitfield(defensive,1); /* This is the defensive response of another */ 32. /* attack by dmon against amon */ 33. Bitfield(poison,1); /* Poison was used */ 34. Bitfield(poiskilled,1); 35. Bitfield(poismgs,1); 36. Bitfield(vampmsg,1); 37. Bitfield(resists,1); /* Defender resists */ 38. Bitfield(passes,1); /* Attack passes harmlessly through dmon */ 39. Bitfield(dkilled,1); /* Defender is killed */ 40. Bitfield(wlearn,1); /* Character learns identity of wobj */ 41. Bitfield(hitmsg,1); 42. Bitfield(skbonus,1); 43. } *Attk; 44. 45. extern void attk_by_you(Attk); 46. extern void attk_by_mon(Attk, struct monst *); 47. extern void attk_by_god(Attk, SCHAR_P); 48. extern void attk_by_trap(Attk, XCHAR_P); 49. extern void attk_with_obj(Attk, struct obj *); 50. extern void attk_with_mon(Attk, XCHAR_P); 51. extern void attk_throw(Attk, struct obj *); 52. extern void attk_upon(Attk, struct monst *); 53. extern char *attk_aname(Attk); 54. extern char *attk_wname(Attk); 55. extern char *attk_tname(Attk); 56. extern char *attk_dname(Attk); 57. 58. /* Add new attack types below - ordering affects experience (exper.c). 59. * Attacks > AT_BUTT are worth extra experience. 60. */ 61. #define AT_NONE 0 /* passive monster (ex. acid blob) */ 62. #define AT_CLAW 1 /* claw (punch, hit, etc.) */ 63. #define AT_BITE 2 /* bite */ 64. #define AT_KICK 3 /* kick */ 65. #define AT_BUTT 4 /* head butt (ex. a unicorn) */ 66. #define AT_TUCH 5 /* touches */ 67. #define AT_STNG 6 /* sting */ 68. #define AT_HUGS 7 /* crushing bearhug */ 69. #define AT_SPIT 10 /* spits substance - ranged */ 70. #define AT_ENGL 11 /* engulf (swallow or by a cloud) */ 71. #define AT_BREA 12 /* breath - ranged */ 72. #define AT_EXPL 13 /* explodes - proximity */ 73. #define AT_BOOM 14 /* explodes upon hit */ 74. #define AT_GAZE 15 /* gaze - ranged */ 75. #define AT_TENT 16 /* tentacles */ 76. 77. #define AT_WEAP 64 /* Hand-to-hand weapon (monster or character) */ 78. #define AT_THRO 65 /* Thrown object */ 79. #define AT_SPEL 66 /* Magic spell (monster or character) */ 80. #define AT_WAND 67 /* Wand or camera (monster or character) */ 81. #define AT_MEGA 68 /* Mega spell/wand */ 82. #define AT_TRAP 69 /* Trap (amon is null) */ 83. #define AT_GODS 70 /* God (amon is null) */ 84. 85. /*#define AT_MAGC 66 */ /* uses magic spell(s) */ 86. 87. 88. /* Add new damage types below. 89. * 90. * Note that 1-10 correspond to the types of attack used in buzz(). 91. * Please don't disturb the order unless you rewrite the buzz() code. 92. */ 93. #define AD_PHYS 0 /* ordinary physical */ 94. #define AD_MAGM 1 /* magic missiles */ 95. #define AD_FIRE 2 /* fire damage */ 96. #define AD_COLD 3 /* frost damage */ 97. #define AD_SLEE 4 /* sleep ray */ 98. #define AD_DISN 5 /* disintegration (death ray) */ 99. #define AD_ELEC 6 /* shock damage */ 100. #define AD_DRST 7 /* drains str (poison) */ 101. #define AD_ACID 8 /* acid damage */ 102. #define AD_LITE 9 /* light ray */ 103. #define AD_SPC2 10 /* for extension of buzz() */ 104. #define AD_BLND 11 /* blinds (glowing eye) */ 105. #define AD_STUN 12 /* stuns */ 106. #define AD_SLOW 13 /* slows */ 107. #define AD_PLYS 14 /* paralyses */ 108. #define AD_DRLI 15 /* drains life levels (Vampire) */ 109. #define AD_DREN 16 /* drains magic energy */ 110. #define AD_LEGS 17 /* damages legs (xan) */ 111. #define AD_STON 18 /* petrifies (Medusa, Cockatrice) */ 112. #define AD_STCK 19 /* sticks to you (Mimic) */ 113. #define AD_SGLD 20 /* steals gold (Leppie) */ 114. #define AD_SITM 21 /* steals item (Nymphs) */ 115. #define AD_SEDU 22 /* seduces & steals multiple items */ 116. #define AD_TLPT 23 /* teleports you (Quantum Mech.) */ 117. #define AD_RUST 24 /* rusts armour (Rust Monster)*/ 118. #define AD_CONF 25 /* confuses (Umber Hulk) */ 119. #define AD_DGST 26 /* digests opponent (trapper, etc.) */ 120. #define AD_HEAL 27 /* heals opponent's wounds (nurse) */ 121. #define AD_WRAP 28 /* special "stick" for eels */ 122. #define AD_WERE 29 /* confers lycanthropy */ 123. #define AD_DRDX 30 /* drains dexterity (Quasit) */ 124. #define AD_DRCO 31 /* drains constitution */ 125. #define AD_DRIN 32 /* drains intelligence (mind flayer) */ 126. #define AD_DISE 33 /* confers diseases */ 127. #define AD_DCAY 34 /* decays organics (Brown pudding) */ 128. #define AD_SSEX 35 /* Succubus seduction (extended) */ 129. /* If no SEDUCE then same as AD_SEDU */ 130. #define AD_HALU 36 /* causes hallucination */ 131. #define AD_DETH 37 /* for Death only */ 132. #define AD_PEST 38 /* for Pestilence only */ 133. #define AD_FAMN 39 /* for Famine only */ 134. #define AD_SLIM 40 /* turns you into green slime */ 135. 136. #define AD_CLRC 240 /* random clerical spell */ 137. #define AD_SPEL 241 /* random magic spell */ 138. #define AD_RBRE 242 /* random breath weapon */ 139. 140. #define AD_SAMU 252 /* hits, may steal Amulet (Wizard) */ 141. #define AD_CURS 253 /* random curse (ex. gremlin) */ 142. 143. 144. /* 145. * Monster to monster attacks. When a monster attacks another (mattackm), 146. * any or all of the following can be returned. See mattackm() for more 147. * details. 148. */ 149. #define MM_MISS 0x0 /* aggressor missed */ 150. #define MM_HIT 0x1 /* aggressor hit defender */ 151. #define MM_DEF_DIED 0x2 /* defender died */ 152. #define MM_AGR_DIED 0x4 /* aggressor died */ 153. 154. #endif /* ATTK_H */ attk.h